home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 24
/
AACD 24.iso
/
AACD
/
Games
/
Mattonite
/
Mattonite.text
< prev
next >
Wrap
Text File
|
2001-07-29
|
86KB
|
2,582 lines
'-> Mattonite by Stefano Regattin
'i> 2 ottobre 1996
'm> 3,8,12,13,14,19,25,27,31 ottobre 1996
'm> 9 novembre 1996
'm> 12 novembre 1997
'm> 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 maggio 2000
'm> 1,4,5,6,7,8,9,11,13,14,23,26,27,28 giugno 2000
'm> 16,17,18,19,23,24 luglio 2000
'm> 5,12,13,14,15,30 agosto 2000
'm> 1,10,11,26 settembre 2000
'm> 12,15,24,25,26,31 ottobre 2000
'm> 2,16,17,21,23 novembre 2000
'm> 3 dicembre 2000
'm> 5,7,8,9,10,11,13,14,17,18,22,25,26,27,28 febbraio 2001
'm> 1 marzo 2001
'm> 15,22,23,26 aprile 2001
'm> 19,20,22,26,27,29 maggio 2001
'm> 1,2,3,4,5,9,10,12,25,28 giugno 2001
'm> 1,2,3,6,7,10,14,15,16,29 luglio 2001
'----------------------------------------
Set Buffer 20
Degree
OGGETTI$="MattoniteOggetti.Abk"
SUONI$="MattoniteSuoni.Abk"
PUNTEGGI$="TopHundredScores"
VERO=-1
FALSO=0
ALTEZZAFONT=8
BANCO=65535
IMMAGINIBOING=8
IMMAGINIGUANO=1
IMMAGINIPAPERO=4
IMMAGINIRUBAPALLINA=11
LARGHEZZAPANNELLO=48
MASSIMOBOINGINCAMPO=3
MASSIMOMATTONCINIDARIDISEGNARE=83
MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO=8
MASSIMOPALLINEINCAMPO=5
OGGETTORIGA=0
OGGETTOCENTRODELLABARRA=1
OGGETTOLATIDELLABARRA=OGGETTOCENTRODELLABARRA+1
OGGETTOMATTONCINODIPOTENZIAMENTO=OGGETTOLATIDELLABARRA+1
OGGETTOBOING=OGGETTOMATTONCINODIPOTENZIAMENTO+MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO
OGGETTOPAPERO=249
OGGETTOGUANO=250
OGGETTOPAPEROALIENO=251
OGGETTORUBAPALLINA=252
OGGETTOLASER=253
OGGETTORAGGIOLASER=254
OGGETTOPALLINA=OGGETTOPAPERO-MASSIMOPALLINEINCAMPO
PRIMAPARTITA=VERO
RITARDODELLENTRATAINCAMPODEIBOING=-1000
SEMITONO#=1.05946
SUONICARICATI=VERO
VOCE=1
Dim NOMEDELGIOCATORE$(99),LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(99)
Dim PUNTEGGIODELGIOCATORE$(99)
Dim DELTAXPALLINA#(MASSIMOPALLINEINCAMPO-1)
Dim DELTAYPALLINA#(MASSIMOPALLINEINCAMPO-1)
Dim VELOCITADELLAPALLINA#(MASSIMOPALLINEINCAMPO-1)
Dim XPALLINA#(MASSIMOPALLINEINCAMPO-1),YPALLINA#(MASSIMOPALLINEINCAMPO-1)
Dim BOING(MASSIMOBOINGINCAMPO-1),C0LORE(31),DURATADELLARIGA(2)
Dim DURATADELRIDISEGNODELMATTONCINO(MASSIMOMATTONCINIDARIDISEGNARE-1)
Dim IMMAGINEBOING(IMMAGINIBOING-1),IMMAGINEPAPERO(IMMAGINIPAPERO-1)
Dim IMMAGINEPAPEROALIENO(IMMAGINIPAPERO-1)
Dim IMMAGINERUBAPALLINA(IMMAGINIRUBAPALLINA-1),INGOMBRODELLABARRA(2)
Dim LAPALLINAERIMASTAINCOLLATAALLABARRA(MASSIMOPALLINEINCAMPO-1)
Dim LAPALLINAHACOLPITOLABARRA(MASSIMOPALLINEINCAMPO-1)
Dim LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(MASSIMOPALLINEINCAMPO-1)
Dim MATTONCINO(246),MATTONCINODARIDISEGNARE(MASSIMOMATTONCINIDARIDISEGNARE-1)
Dim MATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
Dim PALLINA(MASSIMOPALLINEINCAMPO-1)
Dim VOCE(3),X0ZONA(246),XBOING(MASSIMOBOINGINCAMPO-1)
Dim XCOLLA(MASSIMOPALLINEINCAMPO-1)
Dim XMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
Dim Y0ZONA(246),YBOING(MASSIMOBOINGINCAMPO-1),YCOLLA(MASSIMOPALLINEINCAMPO-1)
Dim YMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
Global VERO,FALSO
Global CENTOGIOCATORI$,OGGETTI$,PERCORSO$,PERCORSODEILIVELLI$
Global PERCORSODELLAGRAFICA$,PERCORSODELLAMUSICA$,PUNTEGGI$,SUONI$
Global SEMITONO#
Global ALTEZZAFONT,BANCO,_BARRABLOCCATA,BOINGINCAMPO,BONUS,C0LLA
Global C0LORIDELLOSCHERMOMENOUNO,DISTANZADELMATTONCINOPIUVICINOALPAPERO
Global DURATADELLARIGA,GRADIPAPEROALIENO,GUANOINCAMPO,GUANOMOLLATO
Global IMMAGINEGUANO,IMMAGINELASER,IMMAGINEPALLINA,IMMAGINEPAPERO
Global IMMAGINEPAPEROALIENO,IMMAGINERAGGIOLASER,IMMAGINERUBAPALLINA
Global IMMAGINIBOING,IMMAGINIGUANO,IMMAGINIPAPERO,IMMAGINERIGADUE
Global IMMAGINERIGATRE,IMMAGINERIGAUNO,IMMAGINIRUBAPALLINA,LARGHEZZAPANNELLO
Global LASER,LIVELLO,LUNGHEZZADELLABARRA,LUNGHEZZADELLABARRACAMBIATA
Global MASSIMOBOINGINCAMPO,MASSIMOMATTONCINIDARIDISEGNARE
Global MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO,MASSIMOPALLINEINCAMPO
Global MATTONCINI,MATTONCINIDIPOTENZIAMENTO,MATTONCINIRIMASTI
Global MATTONCINODATROVAREPERILPAPERO,MATTONCINOPERILPAPERO,OGGETTOBOING
Global OGGETTOCENTRODELLABARRA,OGGETTOGUANO,OGGETTOLASER,OGGETTOLATIDELLABARRA
Global OGGETTOMATTONCINODIPOTENZIAMENTO,OGGETTOPALLINA,OGGETTOPAPERO
Global OGGETTOPAPEROALIENO,OGGETTORAGGIOLASER,OGGETTORIGA,OGGETTORUBAPALLINA
Global PALLINAPRESADALRUBAPALLINA,PALLINASCELTADALRUBAPALLINA,PALLINE
Global PALLINEINCAMPO,_PAPEROALIENO,_PAPEROALIENOINCAMPO,_PAPEROINCAMPO
Global POSIZIONE,PUNTEGGIO,PUNTEGGIOMASSIMO,RAGGIOLASERRIFLESSO
Global RAGGIOLASERSPARATO,RIGA,RIMBALZODELLEPALLINESUIMATTONCINI,RITARDOBOING
Global RITARDOPAPERO,RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA
Global RITARDODELLENTRATAINCAMPODEIBOING
Global RITARDODELLENTRATAINCAMPODELPAPEROALIENO
Global RITARDODELLENTRATAINCAMPODELRUBAPALLINA,RUBAPALLINACOLPITO
Global SUONICARICATI,TASTO,TASTOGRIGIO,T0GLILARIGA,VOCE,XBARRA,XFINALERIGA
Global XGUANO,XLASER,XPANNELLO,XPAPERO,XPAPEROALIENO,XRIGA,XRUBAPALLINA,YBARRA
Global YGUANO,YLASER,YPAPERO,YPAPEROALIENO,YRUBAPALLINA
Global NOMEDELGIOCATORE$(),LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$()
Global PUNTEGGIODELGIOCATORE$()
Global DELTAXPALLINA#(),DELTAYPALLINA#(),VELOCITADELLAPALLINA#(),XPALLINA#()
Global YPALLINA#()
Global BOING(),C0LORE(),DURATADELLARIGA(),DURATADELRIDISEGNODELMATTONCINO()
Global IMMAGINEBOING(),IMMAGINEPAPERO(),IMMAGINEPAPEROALIENO()
Global IMMAGINERUBAPALLINA(),INGOMBRODELLABARRA()
Global LAPALLINAERIMASTAINCOLLATAALLABARRA(),LAPALLINAHACOLPITOLABARRA()
Global LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(),MATTONCINO()
Global MATTONCINODARIDISEGNARE(),MATTONCINODIPOTENZIAMENTO(),PALLINA(),VOCE()
Global X0ZONA(),XBOING(),XCOLLA(),XMATTONCINODIPOTENZIAMENTO(),YBOING()
Global YCOLLA(),YMATTONCINODIPOTENZIAMENTO(),Y0ZONA()
Proc INDIVIDUALAPOSIZIONEDELPROGRAMMA
Proc IMPOSTAIPERCORSIDEIFILE
Proc IMPOSTALOSCHERMO
Proc CARICAGLIOGGETTI
Proc IMPOSTAGLIOGGETTI
Proc IMPOSTAICOLORI
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
Proc TROVAILFONTDATA70
Proc DISSOLVENZADEICOLORI[$FFF,1,1]
Hide
Proc IMPOSTALARCOBALENO
If SUONICARICATI=VERO Then Proc CARICAISUONI
Proc CARICAILLIVELLO
Proc DABANCOAVARIABILI
Proc METTIILPANNELLO
Proc CREALEIMMAGINIPERLERIGHE
Proc IMPOSTALEZONEDEIMATTONCINI
Proc METTIECONTAIMATTONCINI
Proc IMPOSTALINGOMBRODELLABARRA
Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
Proc IMPOSTALADURATADELLERIGHE
Proc DISSOLVENZADEICOLORI[$FFF,1,2]
Proc IMPOSTAILAMPEGGI
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
Repeat
Proc MOSTRAICREDITI
Proc MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
TESTOINTRODUTTIVO$="Press left mouse button to play."+Chr$(10)
TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"Press right mouse button to exit."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINTRODUTTIVO$,20,21,1,500]
If TASTO=-1
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
C0LLA=FALSO
DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
DURATADELLARIGA=-1
INIZIODELLIVELLO=VERO
LASER=0
LIVELLO=0
LUNGHEZZADELLABARRA=1
LUNGHEZZADELLABARRACAMBIATA=LUNGHEZZADELLABARRA
PALLINASCELTATADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
PALLINE=5
PALLINEINCAMPO=1
_PAPEROINCAMPO=FALSO
PUNTEGGIO=0
RIGA=0
RIMBALZODELLEPALLINESUIMATTONCINI=VERO
XBARRA=X Screen(X Mouse)
YBARRA=247
If PRIMAPARTITA=FALSO or LIVELLO>0
Proc CANCELLAIMATTONCINI
Proc CARICAILLIVELLO
Proc DABANCOAVARIABILI
Proc METTIECONTAIMATTONCINI
Else
PRIMAPARTITA=FALSO
End If
Repeat
Proc IMPOSTAILRIMBALZODELLEPALLINE
Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
Proc AGGIORNAILPANNELLO
If INIZIODELLIVELLO=VERO
TESTOINIZIOGIOCO$="Get ready for level"+Str$(LIVELLO)+"!"+Chr$(10)
TESTOINIZIOGIOCO$=TESTOINIZIOGIOCO$+"Press a (mouse) key to begin..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINIZIOGIOCO$,22,20,1,500]
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc IMPOSTAIBOING
If SUONICARICATI=VERO
Sam Play VOCE,1 : Proc VOCESEGUENTE
Else
Bell 20
End If
INIZIODELLIVELLO=FALSO
End If
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA<PALLINEINCAMPO
PALLINA(PALLINA)=VERO
XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
YPALLINA#(PALLINA)=YBARRA-3
Else
PALLINA(PALLINA)=FALSO
Proc CANCELLALAPALLINA[PALLINA]
End If
Next PALLINA
Repeat
TASTOCLICCATODELTOPO=Mouse Click
XBARRA=X Screen(X Mouse)
Proc MOSTRALABARRA
Proc CAMBIALALUNGHEZZADELLABARRA
Proc LIMITAIMOVIMENTIDELLABARRA
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=VERO
XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
YPALLINA#(PALLINA)=YBARRA-3
Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
End If
Next PALLINA
Proc MOSTRAILLASER
If T0GLILARIGA>0
If XRIGA>0
Dec XRIGA
End If
Proc MOSTRALARIGA[T0GLILARIGA]
Else
If RIGA>0
If XRIGA<XFINALERIGA
Inc XRIGA
Proc MOSTRALARIGA[RIGA]
End If
End If
End If
Proc MATTONCINIDIPOTENZIAMENTO[0,0]
Proc BOINGINCAMPO
If _PAPEROINCAMPO=VERO
Proc _PAPEROINCAMPO
End If
If RITARDODELLENTRATAINCAMPODELPAPEROALIENO=0
Proc _PAPEROALIENOINCAMPO
Proc MOLLAILGUANO
Else
Dec RITARDODELLENTRATAINCAMPODELPAPEROALIENO
End If
If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=1
ENTRATAINCAMPODELRUBAPALLINA=Rnd(2)>1
End If
If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0
If ENTRATAINCAMPODELRUBAPALLINA=VERO
Proc RUBAPALLINAINCAMPO
End If
Else
Dec RITARDODELLENTRATAINCAMPODELRUBAPALLINA
End If
Bob Update
TASTOPREMUTO$=Lower$(Inkey$)
TASTOGRIGIO=Key Shift
TASTOSCANSITO=Scancode
Exit If TASTOPREMUTO$=Chr$(27)
If TASTOPREMUTO$="p"
Proc METTIILGIOCOINPAUSA
End If
If TASTOGRIGIO=4
If TASTOSCANSITO=80 : Rem F1 key
Add LUNGHEZZADELLABARRACAMBIATA,1,0 To 2
Else If TASTOSCANSITO=81 : Rem F2 key
Add PALLINEINCAMPO,1,1 To 5
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA<PALLINEINCAMPO
PALLINA(PALLINA)=VERO
Else
PALLINA(PALLINA)=FALSO
Proc CANCELLALAPALLINA[PALLINA]
End If
Next PALLINA
Else If TASTOSCANSITO=82 : Rem F3 key
If LASER=-1
LASER=1
Else If LASER=1
LASER=2
Else If LASER=2
LASER=3
Else If LASER=3
LASER=0
End If
Else If TASTOSCANSITO=83 : Rem F4 key
If RIGA>0 and T0GLILARIGA=0
T0GLILARIGA=RIGA
End If
Add RIGA,1,0 To 3
Else If TASTOPREMUTO$=" "
Proc MATTONCINIDIPOTENZIAMENTO[-Rnd(18)-1,0]
End If
End If
Until TASTOCLICCATODELTOPO>0
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA<PALLINEINCAMPO
PALLINA(PALLINA)=VERO
VELOCITADELLAPALLINA#(PALLINA)=1
D1REZIONEXPALLINA=Rnd(1)
If D1REZIONEXPALLINA=1
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
Else
DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
End If
DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
Else
PALLINA(PALLINA)=FALSO
Proc CANCELLALAPALLINA[PALLINA]
End If
Next PALLINA
Repeat
TASTOCLICCATODELTOPO=Mouse Click
If TASTOCLICCATODELTOPO=1
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
Next PALLINA
Else If TASTOCLICCATODELTOPO=2
Proc HAISPARATOILRAGGIOLASER
End If
If _BARRABLOCCATA>0
If _BARRABLOCCATA=1
X Mouse=X Hard(XBARRA)
End If
Dec _BARRABLOCCATA
Else
XBARRA=X Screen(X Mouse)
End If
Proc MOSTRALABARRA
Proc CAMBIALALUNGHEZZADELLABARRA
Proc LIMITAIMOVIMENTIDELLABARRA
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=VERO
If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
XPALLINA#(PALLINA)=XBARRA-XCOLLA(PALLINA)
YPALLINA#(PALLINA)=YBARRA-YCOLLA(PALLINA)
Else
XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+DELTAXPALLINA#(PALLINA)
YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+DELTAYPALLINA#(PALLINA)
If TILTPALLINA=VERO
XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+XTILTPALLINA
YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+YTILTPALLINA
End If
If XPALLINA#(PALLINA)>XPANNELLO-1-3
XPALLINA#(PALLINA)=XPANNELLO-1-3
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
If SUONICARICATI=VERO
Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
Else
Boom
End If
Else If XPALLINA#(PALLINA)<3
XPALLINA#(PALLINA)=3
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
If SUONICARICATI=VERO
Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
Else
Boom
End If
Else If YPALLINA#(PALLINA)<3
YPALLINA#(PALLINA)=3
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
If SUONICARICATI=VERO
Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
Else
Boom
End If
End If
If TILTPALLINA=VERO
Add XTILTPALLINA,-Sgn(XTILTPALLINA)
If XTILTPALLINA>0
XTILTPALLINA=Max(XTILTPALLINA,0)
Else If XTILTPALLINA<0
XTILTPALLINA=Min(XTILTPALLINA,0)
End If
Add YTILTPALLINA,-Sgn(YTILTPALLINA)
If YTILTPALLINA>0
YTILTPALLINA=Max(YTILTPALLINA,0)
Else If YTILTPALLINA<0
YTILTPALLINA=Min(YTILTPALLINA,0)
End If
Screen Display 0,128+XTILTPALLINA,44+YTILTPALLINA,320,256
If XTILTPALLINA=0 and YTILTPALLINA=0
TILTPALLINA=FALSO
End If
Else
If TASTOPREMUTO$=" "
XTILTPALLINA=Rnd(32)-16 : YTILTPALLINA=Rnd(32)-16 : TILTPALLINA=VERO
End If
End If
End If
Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
Proc MATTONCINOCOLPITODALLAPALLINA[PALLINA]
Proc LAPALLINAHACOLPITOLABARRA[PALLINA]
Proc LAPALLINAHACOLPITOLARIGA[PALLINA]
Proc LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
End If
End If
Next PALLINA
Exit If TASTOPREMUTO$=Chr$(27)
TASTOPREMUTO$=Lower$(Inkey$)
Exit If TASTOPREMUTO$=Chr$(27)
If TASTOPREMUTO$="p"
Proc METTIILGIOCOINPAUSA
End If
Proc MOSTRAILLASER
Proc MOSTRAILRAGGIOLASER
TASTOGRIGIO=Key Shift
SHIFTSINISTRO=Btst(0,TASTOGRIGIO)
SHIFTDESTRO=Btst(1,TASTOGRIGIO)
TASTOMAIUSCOLE=Btst(2,TASTOGRIGIO)
TASTISHIFTPREMUTI=SHIFTSINISTRO or SHIFTDESTRO or TASTOMAIUSCOLE
If TASTISHIFTPREMUTI=FALSO
Proc MATTONCINOCOLPITODALRAGGIOLASER
End If
Proc LABARRAESTATACOLPITADALRAGGIOLASERRIFLESSO
If T0GLILARIGA>0
If XRIGA>0
Dec XRIGA : Proc MOSTRALARIGA[T0GLILARIGA]
Else
Proc T0GLILARIGA : DURATADELLARIGA=-1
End If
Else
If RIGA>0
If XRIGA<XFINALERIGA
Inc XRIGA : Proc MOSTRALARIGA[RIGA]
Else
If DURATADELLARIGA=-1
DURATADELLARIGA=DURATADELLARIGA(RIGA-1)
Else If DURATADELLARIGA=0
T0GLILARIGA=RIGA : RIGA=0
Else
Dec DURATADELLARIGA
End If
End If
End If
End If
Proc MATTONCINIDIPOTENZIAMENTO[0,0]
Proc BOINGINCAMPO
If _PAPEROINCAMPO=VERO
Proc _PAPEROINCAMPO
End If
If RITARDODELLENTRATAINCAMPODELPAPEROALIENO=0
Proc _PAPEROALIENOINCAMPO
Proc MOLLAILGUANO
Else
Dec RITARDODELLENTRATAINCAMPODELPAPEROALIENO
End If
If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=1
ENTRATAINCAMPODELRUBAPALLINA=Rnd(2)>1
End If
If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0
If ENTRATAINCAMPODELRUBAPALLINA=VERO
Proc RUBAPALLINAINCAMPO
End If
Else
Dec RITARDODELLENTRATAINCAMPODELRUBAPALLINA
End If
Bob Update
For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)>0
MATTONCINO=MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)
If MATTONCINO>0
X0MATTONCINO=X0ZONA(MATTONCINO-1)
Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
TIPODIMATTONCINO=MATTONCINO(MATTONCINO-1)
If TIPODIMATTONCINO=0
Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
Else
Paste Bob X0MATTONCINO,Y0MATTONCINO,82+TIPODIMATTONCINO
End If
End If
Dec DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)
End If
Next MATTONCINODARIDISEGNARE
If BONUS>0
If RITARDODELDECREMENTODELBONUS=9
RITARDODELDECREMENTODELBONUS=0 : Dec BONUS : Proc MOSTRAILBONUS[FALSO]
Else
Inc RITARDODELDECREMENTODELBONUS
End If
End If
Exit If MATTONCINI=0
Until PALLINEINCAMPO=0
Proc CANCELLALABARRA
Proc CANCELLALEPALLINE
Proc T0GLIILLASER
Proc CANCELLAILRAGGIOLASER
Proc CANCELLAIMATTONCINIDIPOTENZIAMENTO
Proc CANCELLAILRUBAPALLINA
Proc CANCELLAILPAPERO : _PAPEROINCAMPO=FALSO
Proc CANCELLAILPAPEROALIENO
Proc CANCELLAILGUANO
Proc CANCELLAIBOING
Proc CANCELLALARIGA
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
Exit If TASTOPREMUTO$=Chr$(27)
If MATTONCINI=0
Proc AGGIUNGIALPUNTEGGIOILBONUS
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc AGGIORNAILPANNELLO
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
Proc AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc AGGIORNAILPANNELLO
Inc LIVELLO
INIZIODELLIVELLO=VERO
End If
If PALLINEINCAMPO>0
Proc CANCELLAIMATTONCINI
Proc CARICAILLIVELLO
Exit If LIVELLO<0
Proc DABANCOAVARIABILI
Proc METTIECONTAIMATTONCINI
Else
Proc CANCELLALARIGA
C0LLA=FALSO
RIMBALZODELLEPALLINESUIMATTONCINI=VERO
If LASER>0
Dec LASER
End If
Dec PALLINE : PALLINEINCAMPO=1
If SUONICARICATI=VERO
Sam Play VOCE,5 : Proc VOCESEGUENTE
Else
Boom
End If
End If
Until PALLINE=0
If TASTOPREMUTO$<>Chr$(27)
Proc AGGIUNGIALPUNTEGGIOILBONUSPERLEPALLINERIMASTEAFINEGIOCO
Proc FAIINSERIREALGIOCATOREILSUOPUNTEGGIO
Proc SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
End If
GREETING$="The game is finished."+Chr$(10)
GREETING$=GREETING$+"I hope you have enjoyed."+Chr$(10)
GREETING$=GREETING$+"Bye bye!"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[GREETING$,20,22,1,1000]
End If
Until TASTO=-2
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Flash Off : Proc DISSOLVENZADEICOLORI[0,1,1]
Proc T0GLIIMATTONCINI
Proc T0GLIILPANNELLO
Proc T0GLILARCOBALENO
Show : Rainbow Del 0 : Screen Close 0 : Erase All : End
Procedure AGGIORNAILPANNELLO
' Update the panel
Proc MOSTRAILPUNTEGGIO[VERO]
Proc MOSTRAILPUNTEGGIOMASSIMO[VERO]
Proc MOSTRALEPALLINERIMASTE
Proc MOSTRAILLIVELLO
Proc MOSTRAILBONUS[VERO]
End Proc
Procedure AGGIUNGIALPUNTEGGIOILBONUS
' Add the bonus to the score
If BONUS>0
BONUS$="I am going to add the bonus points..."+Chr$(10)
BONUS$=BONUS$+"...to your game points."+Chr$(10)
BONUS$=BONUS$+"Wait for a moment, please..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
Repeat
TASTOPREMUTO$=Lower$(Inkey$)
If TASTOPREMUTO$="p"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc METTIILGIOCOINPAUSA
End If
Dec BONUS : Proc MOSTRAILBONUS[FALSO]
Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
Until BONUS=0
Else
TASTOPREMUTO$=Lower$(Inkey$)
If TASTOPREMUTO$="p"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc METTIILGIOCOINPAUSA
End If
BONUS$="There are no bonus points..."+Chr$(10)
BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next level."+Chr$(10)
BONUS$=BONUS$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
End If
End Proc
Procedure AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
' Add 2 points to the score for every brick left
If MATTONCINIRIMASTI>0
BONUS$="I am going to add the bricks left bonus points..."+Chr$(10)
BONUS$=BONUS$+"...to your game points,"+Chr$(10)
BONUS$=BONUS$+"adding two points for each brick left."+Chr$(10)
BONUS$=BONUS$+"There are"+Str$(MATTONCINIRIMASTI)+" bricks left..."+Chr$(10)
BONUS$=BONUS$+"...wait for a moment, please..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
Repeat
TASTOPREMUTO$=Lower$(Inkey$)
If TASTOPREMUTO$="p"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc METTIILGIOCOINPAUSA
End If
Dec MATTONCINIRIMASTI
Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO]
Until MATTONCINIRIMASTI=0
Else
TASTOPREMUTO$=Lower$(Inkey$)
If TASTOPREMUTO$="p"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc METTIILGIOCOINPAUSA
End If
BONUS$="There are no bricks left bonus points..."+Chr$(10)
BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next level."+Chr$(10)
BONUS$=BONUS$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
End If
End Proc
Procedure AGGIUNGIALPUNTEGGIOILBONUSPERLEPALLINERIMASTEAFINEGIOCO
' Add 500 points to the score for every ball left at the end of the game
If PALLINE>0
BONUS$="I am going to add the ball left bonus points..."+Chr$(10)
BONUS$=BONUS$+"...to your game points,"+Chr$(10)
BONUS$=BONUS$+"adding 500 points for each ball left."+Chr$(10)
BONUS$=BONUS$+"There are"+Str$(PALLINE)+" ball(s) left..."+Chr$(10)
BONUS$=BONUS$+"...wait for a moment, please..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
Repeat
TASTOPREMUTO$=Lower$(Inkey$)
If TASTOPREMUTO$="p"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Proc METTIILGIOCOINPAUSA
End If
Dec PALLINE : Proc MOSTRALEPALLINERIMASTE
Add PUNTEGGIO,500 : Proc MOSTRAILPUNTEGGIO[VERO]
Sam Play VOCE,2 : Proc VOCESEGUENTE
_ASPETTA[50]
Until PALLINE=0
Else
BONUS$="There are no balls left bonus points..."+Chr$(10)
BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next game."+Chr$(10)
BONUS$=BONUS$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
End If
End Proc
Procedure _ASPETTA[TEMP0DAASPETTARE]
' Wait for a (mouse or grey) key pressed:
' if time to wait (TEMP0DAASPETTARE) is less than zero exit immediately;
' if time to wait is equal to zero wait forever;
' if time to wait is grater than zero wait the specified time.
TASTO=0
Timer=0
Repeat
TASTOPREMUTO$=Inkey$
TASTOGRIGIO=Key Shift
TASTOPREMUTODELTOPO=Mouse Key
If TASTOGRIGIO>0 and TASTOGRIGIO<>Key Shift
Add TASTO,TASTOGRIGIO*256 : Exit
End If
If TASTOPREMUTODELTOPO>0 Then TASTO=-TASTOPREMUTODELTOPO : Exit
If TASTOPREMUTO$<>"" Then TASTO=Asc(TASTOPREMUTO$) : Exit
If TEMP0DAASPETTARE>0 Then TEMP0TRASCORSO=Timer
If TEMP0DAASPETTARE<0 Then Pop Proc
Until TEMP0TRASCORSO>TEMP0DAASPETTARE
End Proc
Procedure BOINGINCAMPO
' Manage the boings
For BOING=0 To MASSIMOBOINGINCAMPO-1
If BOING(BOING)>0
If RITARDOBOING=0
Bob OGGETTOBOING+BOING,XBOING(BOING),YBOING(BOING),IMMAGINEBOING(BOING(BOING)-1)
Add XBOING(BOING),Rnd(4)-2
Proc LIMITI[XBOING(BOING),0,XFINALERIGA] : XBOING(BOING)=Param
Inc YBOING(BOING)
Add BOING(BOING),1,1 To 8
End If
Proc ILBOINGESTATOCOLPITO[BOING]
Proc ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
Else If BOING(BOING)=0
XBOING(BOING)=Rnd(XFINALERIGA) : YBOING(BOING)=-9 : BOING(BOING)=Rnd(7)+1
If SUONICARICATI=VERO
Sam Play VOCE,10 : Proc VOCESEGUENTE
Else
Bell 60
End If
Else If BOING(BOING)<0
If BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
Proc CANCELLAILBOING[BOING] : Inc BOING(BOING)
Else
Inc BOING(BOING)
End If
End If
Next BOING
Add RITARDOBOING,1,0 To 3
End Proc
Procedure CAMBIALALUNGHEZZADELLABARRA
' Change the bar size
If LUNGHEZZADELLABARRACAMBIATA<>LUNGHEZZADELLABARRA
If LUNGHEZZADELLABARRA=0
If LUNGHEZZADELLABARRACAMBIATA=1
Gosub LUNGHEZZADAZEROAUNO
End If
If LUNGHEZZADELLABARRACAMBIATA=2
Gosub LUNGHEZZADAZEROAUNO
Gosub LUNGHEZZADAUNOADUE
End If
Else If LUNGHEZZADELLABARRA=1
If LUNGHEZZADELLABARRACAMBIATA=0
Gosub LUNGHEZZADAUNOAZERO
End If
If LUNGHEZZADELLABARRACAMBIATA=2
Gosub LUNGHEZZADAUNOADUE
End If
Else If LUNGHEZZADELLABARRA=2
If LUNGHEZZADELLABARRACAMBIATA=0
Gosub LUNGHEZZADADUEAUNO
Gosub LUNGHEZZADAUNOAZERO
End If
If LUNGHEZZADELLABARRACAMBIATA=1
Gosub LUNGHEZZADADUEAUNO
End If
End If
End If
LUNGHEZZADELLABARRA=LUNGHEZZADELLABARRACAMBIATA
Pop Proc
LUNGHEZZADAZEROAUNO:
' From small to medium bar
For OGGETTO=45 To 41 Step -1
Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+5
Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
Bob Update
Next OGGETTO
Return
LUNGHEZZADAUNOADUE:
' From medium to large bar
For OGGETTO=13 To 26
Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+14
Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
Bob Update
Next OGGETTO
Return
LUNGHEZZADADUEAUNO:
' From large to medium bar
For OGGETTO=26 To 13 Step -1
Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+14
Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
Bob Update
Next OGGETTO
Return
LUNGHEZZADAUNOAZERO:
' From medium to small bar
For OGGETTO=41 To 45
Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+5
Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
Bob Update
Next OGGETTO
Return
End Proc
Procedure CANCELLAIBOING
' Turn off all the boings
For BOING=0 To MASSIMOBOINGINCAMPO-1
Bob Off OGGETTOBOING+BOING
Next BOING
Bob Update
End Proc
Procedure CANCELLAILBOING[BOING]
' Turn off the specified boing
Bob Off OGGETTOBOING+BOING
Bob Update
End Proc
Procedure CANCELLAILGUANO
Bob Off OGGETTOGUANO
Bob Update
GUANOMOLLATO=FALSO
GUANOINCAMPO=FALSO
End Proc
Procedure CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
' Turn off the specified bonus brick
Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
Bob Update
MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
End Proc
Procedure CANCELLAILPAPERO
' Turn off the duck
Bob Off OGGETTOPAPERO
Bob Update
End Proc
Procedure CANCELLAILPAPEROALIENO
' Turn off the alien duck
Bob Off OGGETTOPAPEROALIENO
Bob Update
_PAPEROALIENO=0
_PAPEROALIENOINCAMPO=FALSO
End Proc
Procedure CANCELLAILRAGGIOLASER
' Turn off the laser ray
Bob Off OGGETTORAGGIOLASER
Bob Update
RAGGIOLASERSPARATO=FALSO
End Proc
Procedure CANCELLAILRUBAPALLINA
' Turn off the ballthief
Bob Off OGGETTORUBAPALLINA
Bob Update
Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
End Proc
Procedure CANCELLAIMATTONCINI
' Clear the bricks area
Cls 0,0,0 To XPANNELLO,Screen Height
End Proc
Procedure CANCELLAIMATTONCINIDIPOTENZIAMENTO
' Turn off all the bonus bricks
For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
If MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>0
Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
End If
MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
Next MATTONCINODIPOTENZIAMENTO
Bob Update
End Proc
Procedure CANCELLALABARRA
' Turn off the bar
Bob Off OGGETTOCENTRODELLABARRA
Bob Off OGGETTOLATIDELLABARRA
Bob Update
End Proc
Procedure CANCELLALAPALLINA[PALLINA]
' Turn off the specified ball
Bob Off OGGETTOPALLINA+PALLINA
Bob Update
End Proc
Procedure CANCELLALARIGA
' Turn off the row
If RIGA>0
T0GLILARIGA=RIGA : RIGA=0
For XRIGA=XRIGA To 0 Step -1
Proc MOSTRALARIGA[T0GLILARIGA] : Wait Vbl
Next XRIGA
DURATADELLARIGA=-1
End If
End Proc
Procedure CANCELLALEPALLINE
' Turn off all the balls
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
Bob Off OGGETTOPALLINA+PALLINA
Next PALLINA
Bob Update
End Proc
Procedure CARICAGLIOGGETTI
' Load the objects
Load PERCORSODELLAGRAFICA$+OGGETTI$
End Proc
Procedure CARICAILLIVELLO
' Load the level
LIVELLO$="Livello"+Str$(LIVELLO)-" "
FILE$=PERCORSODEILIVELLI$+LIVELLO$
If Exist(FILE$)
Open In 1,FILE$
MARCATORE$=Input$(1,9)
LUNGHEZZABANCO=Lof(1)
Close 1
If MARCATORE$="Mattonite"
Reserve As Work BANCO,LUNGHEZZABANCO
Bload FILE$,Start(BANCO)
End If
Else
LIVELLO= Not LIVELLO
End If
End Proc
Procedure CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
' Load the top hundred scores
If Exist(PUNTEGGI$)
CENTOGIOCATORI$=""
Open In 1,PUNTEGGI$
For POSIZIONE=0 To 99
Exit If Eof(1)
Input #1,NOMEDELGIOCATORE$(POSIZIONE)
CENTOGIOCATORI$=CENTOGIOCATORI$+"<"+Str$(POSIZIONE+1)-" "+"> "
CENTOGIOCATORI$=CENTOGIOCATORI$+NOMEDELGIOCATORE$(POSIZIONE)+Chr$(10)
Input #1,PUNTEGGIODELGIOCATORE$(POSIZIONE)
CENTOGIOCATORI$=CENTOGIOCATORI$+PUNTEGGIODELGIOCATORE$(POSIZIONE)
CENTOGIOCATORI$=CENTOGIOCATORI$+" points up to level "
Input #1,LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE)
CENTOGIOCATORI$=CENTOGIOCATORI$+LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE)
If Not Eof(1)
CENTOGIOCATORI$=CENTOGIOCATORI$+Chr$(10)
End If
Next POSIZIONE
Close 1
PUNTEGGIOMASSIMO=Val(PUNTEGGIODELGIOCATORE$(0))
Inc POSIZIONE
End If
End Proc
Procedure CARICAISUONI
' Load the sounds
Load PERCORSODELLAMUSICA$+SUONI$
End Proc
Procedure CREALEIMMAGINIPERLERIGHE
' Create the row images
XFINALERIGA=XPANNELLO-1
IMMAGINERIGAUNO=IMMAGINEPALLINA+1
Ink 20 : Bar 0,251 To XFINALERIGA,255
Get Bob IMMAGINERIGAUNO,0,251 To XFINALERIGA+1,255+1
Hot Spot IMMAGINERIGAUNO,XFINALERIGA,0
IMMAGINERIGADUE=IMMAGINERIGAUNO+1
Ink 21 : Bar 0,251 To XFINALERIGA,255
Get Bob IMMAGINERIGADUE,0,251 To XFINALERIGA+1,255+1
Hot Spot IMMAGINERIGADUE,XFINALERIGA,0
IMMAGINERIGATRE=IMMAGINERIGADUE+1
Ink 22 : Bar 0,251 To XFINALERIGA,255
Get Bob IMMAGINERIGATRE,0,251 To XFINALERIGA+1,255+1
Hot Spot IMMAGINERIGATRE,XFINALERIGA,0
Ink 0 : Bar 0,251 To XFINALERIGA,255
End Proc
Procedure CREATESTOBORDATO[XTESTO,YTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
' Create outlined text
Ink C0LOREBORDO
Text XTESTO,YTESTO-1,TESTO$
Text XTESTO+1,YTESTO-1,TESTO$
Text XTESTO+1,YTESTO,TESTO$
Text XTESTO+1,YTESTO+1,TESTO$
Text XTESTO,YTESTO+1,TESTO$
Text XTESTO-1,YTESTO+1,TESTO$
Text XTESTO-1,YTESTO,TESTO$
Text XTESTO-1,YTESTO-1,TESTO$
Ink C0LORETESTO
Text XTESTO,YTESTO,TESTO$
End Proc
Procedure DABANCOAVARIABILI
' Copy from bank to variables
If Length(BANCO)>0
INDIRIZZO=Start(BANCO)+9
For A=0 To 246
MATTONCINO(A)=Peek(INDIRIZZO)
Inc INDIRIZZO
Next A
For A=0 To 255
ARCOBALENO=Peek(INDIRIZZO)
Inc INDIRIZZO
ARCOBALENO=ARCOBALENO+Peek(INDIRIZZO)*$100
Rain(0,A)=ARCOBALENO : Rainbow 0,257,0,271
Wait Vbl
Inc INDIRIZZO
Next A
BONUS=Peek(INDIRIZZO)
Inc INDIRIZZO
Add BONUS,Peek(INDIRIZZO)*100
Inc INDIRIZZO
Add BONUS,Peek(INDIRIZZO)*10000
Inc INDIRIZZO
Add BONUS,Peek(INDIRIZZO)*1000000
Inc INDIRIZZO
End If
Erase BANCO
End Proc
Procedure DISSOLVENZADEICOLORI[C0LORE,VELOCITA,M0DO]
' Fade the colours
If M0DO=0
For C=0 To C0LORIDELLOSCHERMOMENOUNO
Colour C,C0LORE
If VELOCITA>0
Wait VELOCITA
End If
Next C
Else
Dim ROSSO(C0LORIDELLOSCHERMOMENOUNO),VERDE(C0LORIDELLOSCHERMOMENOUNO),BLU(C0LORIDELLOSCHERMOMENOUNO)
Dim ROSSOFINALE(C0LORIDELLOSCHERMOMENOUNO),VERDEFINALE(C0LORIDELLOSCHERMOMENOUNO),BLUFINALE(C0LORIDELLOSCHERMOMENOUNO)
Dim ROSSODISSOLTO(C0LORIDELLOSCHERMOMENOUNO),VERDEDISSOLTO(C0LORIDELLOSCHERMOMENOUNO),BLUDISSOLTO(C0LORIDELLOSCHERMOMENOUNO)
For C=0 To C0LORIDELLOSCHERMOMENOUNO
If M0DO=1
ROSSOFINALE(C)=C0LORE/256
VERDEFINALE(C)=C0LORE/16 mod 16
BLUFINALE(C)=C0LORE mod 16
Else If M0DO=2
ROSSOFINALE(C)=C0LORE(C)/256
VERDEFINALE(C)=C0LORE(C)/16 mod 16
BLUFINALE(C)=C0LORE(C) mod 16
End If
ROSSO(C)=Colour(C)/256
VERDE(C)=Colour(C)/16 mod 16
BLU(C)=Colour(C) mod 16
Next C
Repeat
For C=0 To C0LORIDELLOSCHERMOMENOUNO
If ROSSODISSOLTO(C)=FALSO
If ROSSO(C)<ROSSOFINALE(C)
Inc ROSSO(C)
Else If ROSSO(C)=ROSSOFINALE(C)
ROSSODISSOLTO(C)=VERO
Else If ROSSO(C)>ROSSOFINALE(C)
Dec ROSSO(C)
End If
End If
If VERDEDISSOLTO(C)=FALSO
If VERDE(C)<VERDEFINALE(C)
Inc VERDE(C)
Else If VERDE(C)=VERDEFINALE(C)
VERDEDISSOLTO(C)=VERO
Else If VERDE(C)>VERDEFINALE(C)
Dec VERDE(C)
End If
End If
If BLUDISSOLTO(C)=FALSO
If BLU(C)<BLUFINALE(C)
Inc BLU(C)
Else If BLU(C)=BLUFINALE(C)
BLUDISSOLTO(C)=VERO
Else If BLU(C)>BLUFINALE(C)
Dec BLU(C)
End If
End If
Colour C,ROSSO(C)*256+VERDE(C)*16+BLU(C)
If C=0
C0LORIDISSOLTI=0
End If
If ROSSODISSOLTO(C)=VERO
If VERDEDISSOLTO(C)=VERO
If BLUDISSOLTO(C)=VERO
Inc C0LORIDISSOLTI
End If
End If
End If
Next C
If VELOCITA>0
Wait VELOCITA
End If
Until C0LORIDISSOLTI=C0LORIDELLOSCHERMOMENOUNO+1
End If
End Proc
Procedure FAIINSERIREALGIOCATOREILSUOPUNTEGGIO
' Let the player type his/her name and then insert name and score in the top
' hundred scores
GIOCATORE$="Anonymous"
Repeat
MESSAGGIO$=""
MESSAGGIO$=MESSAGGIO$+"You have entered the Top Hundred Scores..."+Chr$(10)
MESSAGGIO$=MESSAGGIO$+"...at position"+Str$(POSIZIONE)+"."+Chr$(10)
MESSAGGIO$=MESSAGGIO$+"Please backspace the Anonymous player..."+Chr$(10)
MESSAGGIO$=MESSAGGIO$+"...and type your name; press Return when done."+Chr$(10)
MESSAGGIO$=MESSAGGIO$+GIOCATORE$+Chr$(10)
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIO$,22,20,1,9000]
If TASTO=0
GIOCATORE$="Anonymous" : TASTO=13
End If
If TASTO>255
TASTO=TASTO mod 256
End If
If TASTO=8
GIOCATORE$=Left$(GIOCATORE$,Len(GIOCATORE$)-1)
Else If TASTO=27
TASTO=13 : TASTOESCAPEPREMUTO=VERO
Else If TASTO>31
GIOCATORE$=GIOCATORE$+Chr$(TASTO)
End If
Until TASTO=13
If TASTOESCAPEPREMUTO=FALSO
For POSIZIONI=98 To 0 Step -1
If Val(PUNTEGGIODELGIOCATORE$(POSIZIONI))<PUNTEGGIO
NOMEDELGIOCATORE$(POSIZIONI+1)=NOMEDELGIOCATORE$(POSIZIONI)
PUNTEGGIODELGIOCATORE$(POSIZIONI+1)=PUNTEGGIODELGIOCATORE$(POSIZIONI)
LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI+1)=LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI)
End If
Next POSIZIONI
NOMEDELGIOCATORE$(POSIZIONE-1)=GIOCATORE$
PUNTEGGIODELGIOCATORE$(POSIZIONE-1)=Str$(PUNTEGGIO)-" "
If LIVELLO<0
LIVELLO= Not LIVELLO
End If
LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE-1)=Str$(LIVELLO)-" "
End If
End Proc
Procedure HAISPARATOILRAGGIOLASER
' Fire the laser ray
If LASER>0 and RAGGIOLASERSPARATO=FALSO
XLASER=XBARRA : YLASER=YBARRA+5 : IMMAGINERAGGIOLASER=9+LASER
RAGGIOLASERSPARATO=VERO
If SUONICARICATI=VERO
Sam Play VOCE,4,8363/SEMITONO#^LASER : Proc VOCESEGUENTE
Else
Shoot
End If
End If
End Proc
Procedure ILBOINGESTATOCOLPITO[BOING]
' Check if the specified boing has been hitted
If Bob Col(OGGETTOBOING+BOING,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
PALLINA=Col(-1)-OGGETTOPALLINA
XDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(XBOING(BOING)-Int(XPALLINA#(PALLINA)))
If XDISTANZADELLAPALLINADALBOINGCOLPITO>9
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
End If
YDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(YBOING(BOING)-Int(YPALLINA#(PALLINA)))
If YDISTANZADELLAPALLINADALBOINGCOLPITO>9
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
End If
Add PUNTEGGIO,3 : Proc MOSTRAILPUNTEGGIO[VERO]
BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
If SUONICARICATI=VERO
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else
Bell 3
End If
Else If Bob Col(OGGETTOBOING+BOING,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
Proc CANCELLAILRAGGIOLASER
Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO]
BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
If SUONICARICATI=VERO
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else
Bell 2
End If
Else If Bob Col(OGGETTOBOING+BOING,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
If SUONICARICATI=VERO
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else
Bell 1
End If
End If
End Proc
Procedure ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
' Check if the specified boing has gone out of the game field
If YBOING(BOING)>255+9 Then BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
End Proc
Procedure ILGUANOEUSCITODALCAMPODIGIOCO
' Check if the guano has gone out of the game field
If YGUANO>255 Then Proc CANCELLAILGUANO
End Proc
Procedure ILPAPEROALIENOESTATOCOLPITO
'check if the alien duck has been hitted
If Bob Col(OGGETTOPAPEROALIENO,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
PALLINA=Col(-1)-OGGETTOPALLINA
XPALLINA=Int(XPALLINA#(PALLINA))
XDISTANZADELLAPALLINADALPAPEROALIENO=Abs(XPAPEROALIENO-XPALLINA)
If XDISTANZADELLAPALLINADALPAPEROALIENO>12
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
End If
YPALLINA=Int(YPALLINA#(PALLINA))
YDISTANZADELLAPALLINADALPAPEROALIENO=YPAPEROALIENO-YPALLINA
If YDISTANZADELLAPALLINADALPAPEROALIENO>-21 and YDISTANZADELLAPALLINADALPAPEROALIENO<10
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
End If
Add PUNTEGGIO,24 : Proc MOSTRAILPUNTEGGIO[VERO]
If SUONICARICATI=VERO
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else
Boom
End If
_PAPEROALIENOCOLPITO=VERO
Else If Bob Col(OGGETTOPAPEROALIENO,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
Proc CANCELLAILRAGGIOLASER
Add PUNTEGGIO,12 : Proc MOSTRAILPUNTEGGIO[VERO]
If SUONICARICATI=VERO
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else
Boom
End If
_PAPEROALIENOCOLPITO=VERO
Else If Bob Col(OGGETTOPAPEROALIENO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
Add PUNTEGGIO,6 : Proc MOSTRAILPUNTEGGIO[VERO]
If SUONICARICATI=VERO
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else
Boom
End If
_PAPEROALIENOCOLPITO=VERO
End If
If _PAPEROALIENOCOLPITO=VERO
Proc CANCELLAILPAPEROALIENO
Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
Proc CANCELLAILGUANO
End If
End Proc
Procedure ILPAPEROALIENOEUSCITODALCAMPODIGIOCO
' Check if the alien duck has gone out of the game field
If YPAPEROALIENO>255+9 Then Proc CANCELLAILPAPEROALIENO
End Proc
Procedure ILRUBAPALLINAESTATOCOLPITO
' Check if the ballthief has been hitted
If RUBAPALLINACOLPITO=FALSO
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINAPRESADALRUBAPALLINA<MASSIMOPALLINEINCAMPO
If PALLINA<>PALLINAPRESADALRUBAPALLINA
If Bob Col(OGGETTORUBAPALLINA,OGGETTOPALLINA+PALLINA To OGGETTOPALLINA+PALLINA)=VERO
XPALLINA=Int(XPALLINA#(PALLINA))
XDISTANZADELLAPALLINADALRUBAPALLINA=Abs(XRUBAPALLINA-XPALLINA)
If XDISTANZADELLAPALLINADALRUBAPALLINA>12
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
End If
YPALLINA=Int(YPALLINA#(PALLINA))
YDISTANZADELLAPALLINADALRUBAPALLINA=YRUBAPALLINA-YPALLINA
If YDISTANZADELLAPALLINADALRUBAPALLINA>0 and YDISTANZADELLAPALLINADALRUBAPALLINA<11
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
End If
Add PUNTEGGIO,50 : Proc MOSTRAILPUNTEGGIO[VERO]
If SUONICARICATI=VERO
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else
Boom
End If
RUBAPALLINACOLPITO=VERO
End If
End If
End If
Next PALLINA
If Bob Col(OGGETTORUBAPALLINA,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
Proc CANCELLAILRAGGIOLASER
Add PUNTEGGIO,100 : Proc MOSTRAILPUNTEGGIO[VERO]
If SUONICARICATI=VERO
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else
Boom
End If
RUBAPALLINACOLPITO=VERO
Else If Bob Col(OGGETTORUBAPALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
Add PUNTEGGIO,200 : Proc MOSTRAILPUNTEGGIO[VERO]
If SUONICARICATI=VERO
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else
Boom
End If
RUBAPALLINACOLPITO=VERO
End If
Else
Inc IMMAGINERUBAPALLINA
If IMMAGINERUBAPALLINA=10
Proc CANCELLAILRUBAPALLINA
Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
If PALLINAPRESADALRUBAPALLINA<MASSIMOPALLINEINCAMPO
PALLINA(PALLINAPRESADALRUBAPALLINA)=VERO
End If
PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
IMMAGINERUBAPALLINA=0
RUBAPALLINACOLPITO=FALSO
End If
End If
End Proc
Procedure ILRUBAPALLINAEUSCITODALCAMPODIGIOCO
' Check if the ballthief has gone out of the game field
If YRUBAPALLINA<-4
Proc CANCELLAILRUBAPALLINA
PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
Dec PALLINEINCAMPO
End If
End Proc
Procedure IMPOSTAGLIOGGETTI
' Set the object images
IMMAGINEPALLINA=Length(1)
IMMAGINELASER=6
MATTONCINIDIPOTENZIAMENTO=Length(1)-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO*2-116
For IMMAGINE=0 To IMMAGINIBOING-1
IMMAGINEBOING(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING+IMMAGINE
Next IMMAGINE
For IMMAGINE=0 To IMMAGINIRUBAPALLINA-1
IMMAGINERUBAPALLINA(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA+IMMAGINE
Next IMMAGINE
IMMAGINEGUANO=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO
For IMMAGINE=0 To IMMAGINIPAPERO-1
IMMAGINEPAPEROALIENO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO+IMMAGINE
Next IMMAGINE
For IMMAGINE=0 To IMMAGINIPAPERO-1
IMMAGINEPAPERO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO*2+IMMAGINE
Next IMMAGINE
End Proc
Procedure IMPOSTAIBOING
' Set the boings to their initial status
For BOING=0 To MASSIMOBOINGINCAMPO-1
BOING(BOING)=0
Next BOING
End Proc
Procedure IMPOSTAICOLORI
' Remember the screen palette
Get Bob Palette
C0LORIDELLOSCHERMOMENOUNO=Screen Colour-1
If C0LORIDELLOSCHERMOMENOUNO=63 Then C0LORIDELLOSCHERMOMENOUNO=31
For C=0 To C0LORIDELLOSCHERMOMENOUNO
C0LORE(C)=Colour(C)
Next C
End Proc
Procedure IMPOSTAILAMPEGGI
' Set the colour flashes
Flash 20,"(0FF,2)(FFF,1)(0FF,2)(000,1)"
Flash 21,"(F70,2)(FFF,1)(F70,2)(000,1)"
Flash 22,"(F77,9)(FF7,9)(7F7,9)(7FF,9)(77F,9)(F7F,9)"
End Proc
Procedure IMPOSTAILRIMBALZODELLEPALLINE
' Set the bouncign of the balls to their initial state
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
Next PALLINA
End Proc
Procedure IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
RITARDODELLENTRATAINCAMPODELPAPEROALIENO=29475-LIVELLO*25
End Proc
Procedure IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
RITARDODELLENTRATAINCAMPODELRUBAPALLINA=55950-LIVELLO*50
End Proc
Procedure IMPOSTAIPERCORSIDEIFILE
' Look for the file paths
PERCORSODELLAGRAFICA$=PERCORSO$+"Grafica/"
PERCORSODEILIVELLI$=PERCORSO$+"Livelli/"
PERCORSODELLAMUSICA$=PERCORSO$+"Musica/"
End Proc
Procedure IMPOSTALADURATADELLERIGHE
' Set the time duration of the rows in 50th of a second
DURATADELLARIGA(0)=3000
DURATADELLARIGA(1)=9000
DURATADELLARIGA(2)=27000
End Proc
Procedure IMPOSTALARCOBALENO
' Set the rainbow
Set Rainbow 0,0,271,"","",""
For LINEADELLARCOBALENO=0 To 255
Rain(0,LINEADELLARCOBALENO)=$FFF
Next LINEADELLARCOBALENO
Rainbow 0,257,0,271
End Proc
Procedure IMPOSTALEVOCI
'Set the audio voices
For VOCE=0 To 3
VOCE(VOCE)=2^VOCE
Next VOCE
End Proc
Procedure IMPOSTALEZONEDEIMATTONCINI
' Set the brick detection zones
Reserve Zone 264
For MATTONCINO=0 To 246
LINEADELMATTONCINO=MATTONCINO/13 : RIGADELMATTONCINO=MATTONCINO mod 13
X0ZONA(MATTONCINO)=RIGADELMATTONCINO*21
Y0ZONA(MATTONCINO)=LINEADELMATTONCINO*11
X0MATTONCINO=X0ZONA(MATTONCINO)
Y0MATTONCINO=Y0ZONA(MATTONCINO)
If RIGADELMATTONCINO=12
X1MATTONCINO=X0MATTONCINO+19
Y1MATTONCINO=Y0MATTONCINO+9
Else
X1MATTONCINO=X0MATTONCINO+20
Y1MATTONCINO=Y0MATTONCINO+10
End If
Set Zone MATTONCINO+1,X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO
Next MATTONCINO
End Proc
Procedure IMPOSTALINGOMBRODELLABARRA
' Set the length of the bars from the center to an edge
INGOMBRODELLABARRA(0)=10
INGOMBRODELLABARRA(1)=16
INGOMBRODELLABARRA(2)=31
End Proc
Procedure IMPOSTALOSCHERMO
' Set the screen
Screen Open 0,320,256,64,Lowres : Curs Off : Flash Off : Pen 1 : Paper 0 : Cls
Bob Update Off : Gr Writing 0 : Wait Vbl : Limit Mouse
End Proc
Procedure INDIVIDUALAPOSIZIONEDELPROGRAMMA
' Look for the position of the program
PERCORSO$=Dir$
End Proc
Procedure LABARRAESTATACOLPITADALGUANO
'Check if the bar has been hitted by the guano
If GUANOINCAMPO=VERO and GUANOMOLLATO=VERO
If Bob Col(OGGETTOGUANO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
EFFETTODELGUANO=Rnd(2)
If EFFETTODELGUANO=2
If LASER>0
Dec LASER
End If
Else If EFFETTODELGUANO=1
_BARRABLOCCATA=50+LIVELLO
End If
Proc CANCELLAILGUANO
End If
End If
End Proc
Procedure LABARRAESTATACOLPITADALRAGGIOLASERRIFLESSO
' Check if the bar has been hitted by the reflected laser ray
If RAGGIOLASERSPARATO=VERO and RAGGIOLASERRIFLESSO=VERO
If Bob Col(OGGETTORAGGIOLASER,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
EFFETTODELRAGGIOLASERRIFLESSO=Rnd(2)
If EFFETTODELRAGGIOLASERRIFLESSO=2
If LASER>0
Dec LASER
End If
Else If EFFETTODELRAGGIOLASERRIFLESSO=1
_BARRABLOCCATA=50+LIVELLO
End If
Proc CANCELLAILRAGGIOLASER
RAGGIOLASERRIFLESSO=FALSO
End If
End If
End Proc
Procedure LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
' Check if the specified ball has gone out of the game field
If YPALLINA#(PALLINA)>255+3
Proc CANCELLALAPALLINA[PALLINA]
PALLINA(PALLINA)=FALSO
Dec PALLINEINCAMPO
End If
End Proc
Procedure LAPALLINAHACOLPITOLABARRA[PALLINA]
' Check if the specified ball has hitted the bar
If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
If LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
If C0LLA=VERO
XCOLLA(PALLINA)=XBARRA-Int(XPALLINA#(PALLINA))
YCOLLA(PALLINA)=YBARRA-Int(YPALLINA#(PALLINA))
LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
End If
If Col(OGGETTOCENTRODELLABARRA)=VERO
If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)/2.0
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)*2
LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
Else
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
End If
If SUONICARICATI=VERO
Sam Play VOCE,2 : Proc VOCESEGUENTE
Else
Boom
End If
Else If Col(OGGETTOLATIDELLABARRA)=VERO
If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
Else
DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)*2
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)/2.0
LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
End If
If SUONICARICATI=VERO
Sam Play VOCE,2,8363/2 : Proc VOCESEGUENTE
Else
Boom
End If
End If
LAPALLINAHACOLPITOLABARRA(PALLINA)=VERO
End If
Else
LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
End If
End Proc
Procedure LAPALLINAHACOLPITOLARIGA[PALLINA]
' Check if the specified ball has hitted the row
If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTORIGA To OGGETTORIGA)=VERO
If DELTAYPALLINA#(PALLINA)>0
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
If SUONICARICATI=VERO
Sam Play VOCE,7 : Proc VOCESEGUENTE
Else
Bell 96
End If
End If
End If
End Proc
Procedure LIMITAIMOVIMENTIDELLABARRA
' Lock bar movements
X0LIMITETOPO=X Hard(INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
Y0LIMITETOPO=Y Hard(0)
X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
Y1LIMITETOPO=Y Hard(Screen Height-1)
Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
End Proc
Procedure LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
' Lock bar movements while it is changing
If OGGETTO>39 and OGGETTO<46
INGOMBRODELLABARRA=46-OGGETTO+10
Else If OGGETTO>12 and OGGETTO<27
INGOMBRODELLABARRA=OGGETTO+4
End If
X0LIMITETOPO=X Hard(INGOMBRODELLABARRA)
Y0LIMITETOPO=Y Hard(0)
X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA)
Y1LIMITETOPO=Y Hard(Screen Height-1)
Wait Vbl
Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
End Proc
Procedure LIMITI[NUMERO,LIMITEMINIMO,LIMITEMASSIMO]
'-> Limiti by Stefano Regattin
'i> 19 maggio 1996
'm> 12 giugno 1996
'--------------------------------------------------------
'La procedura equivale alle seguenti linee di programma:
' If NUMERO<LIMITEMINIMO Then NUMERO=LIMITEMINIMO
' If NUMERO>LIMITEMASSIMO Then NUMERO=LIMITEMASSIMO
'Se LIMITEMINIMO è maggiore di LIMITEMASSIMO ne scambia i valori
'----------------------------------------------------------------
If LIMITEMINIMO>LIMITEMASSIMO Then Swap LIMITEMINIMO,LIMITEMASSIMO
NUMERO=Max(Min(NUMERO,LIMITEMASSIMO),LIMITEMINIMO)
End Proc[NUMERO]
Procedure MATTONCINIDIPOTENZIAMENTO[MATTONCINO,ESCESEUGUALEAZERO]
' Manage the bonus bricks
If ESCESEUGUALEAZERO>0 Then Pop Proc
If MATTONCINO=0
For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
If TIPODIMATTONCINODIPOTENZIAMENTO>0
Bob OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),115+TIPODIMATTONCINODIPOTENZIAMENTO
Proc MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
Inc YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
Proc MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
End If
Next MATTONCINODIPOTENZIAMENTO
Else
For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
If TIPODIMATTONCINODIPOTENZIAMENTO=0
If MATTONCINO>0
MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Rnd(19)+1
XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=X0ZONA(MATTONCINO-1)
YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Y0ZONA(MATTONCINO-1)
Else If MATTONCINO<0
MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-MATTONCINO
XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=XBARRA-9
YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-9
End If
Exit
End If
Next MATTONCINODIPOTENZIAMENTO
End If
End Proc
Procedure MATTONCINOCOLPITODALLAPALLINA[PALLINA]
' Check if a brick has been hitted by the specified ball
XPALLINA=Int(XPALLINA#(PALLINA)) : YPALLINA=Int(YPALLINA#(PALLINA))
MATTONCINO=Zone(XPALLINA,YPALLINA)
If MATTONCINO>0
MATTONELLA=MATTONCINO(MATTONCINO-1)
If MATTONELLA>0
If MATTONELLA<10
MATTONCINOELIMINATODALLAPALLINA=VERO
Else If MATTONELLA>9 and MATTONELLA<28
Add MATTONELLA,-9
MATTONCINO(MATTONCINO-1)=MATTONELLA
Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
Else
Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(9)]
MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
End If
If MATTONCINOELIMINATODALLAPALLINA=VERO
Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(19)]
Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
MATTONCINO(MATTONCINO-1)=0
End If
Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
Y1MATTONCINO=Y0MATTONCINO+9
If RIMBALZODELLEPALLINESUIMATTONCINI=VERO
If YPALLINA<Y1MATTONCINO and YPALLINA>Y0MATTONCINO
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
Else
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
End If
If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
If SUONICARICATI=VERO
Sam Play VOCE,3,8363*SEMITONO#^4 : Proc VOCESEGUENTE
Else
Bell 40
End If
Else
If SUONICARICATI=VERO
Sam Play VOCE,3 : Proc VOCESEGUENTE
Else
Bell 30
End If
End If
Else
If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
If SUONICARICATI=VERO
Sam Play VOCE,6,8363*SEMITONO#^4 : Proc VOCESEGUENTE
Else
Bell 60
End If
Else
If SUONICARICATI=VERO
Sam Play VOCE,6 : Proc VOCESEGUENTE
Else
Bell 50
End If
End If
End If
End If
End If
End Proc
Procedure MATTONCINOCOLPITODALRAGGIOLASER
' Check if a brick has been hitted by the laser ray
If RAGGIOLASERSPARATO=VERO
MATTONCINO=Zone(XLASER,YLASER)
If MATTONCINO>0
MATTONELLA=MATTONCINO(MATTONCINO-1)
If MATTONELLA>0
If MATTONELLA<10
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else If MATTONELLA>9 and MATTONELLA<28
Proc CANCELLAILRAGGIOLASER
Add MATTONELLA,-9
MATTONCINO(MATTONCINO-1)=MATTONELLA
Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
Else
If MATTONELLA=28
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else If MATTONELLA=29 and LASER>1
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else If MATTONELLA=30 and LASER=3
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else If MATTONELLA=31
RAGGIOLASERRIFLESSO=VERO
QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else If MATTONELLA=32 and LASER>1
RAGGIOLASERRIFLESSO=VERO
QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else If MATTONELLA=33 and LASER=3
RAGGIOLASERRIFLESSO=VERO
QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
MATTONCINOELIMINATODALRAGGIOLASER=VERO
End If
End If
If MATTONCINOELIMINATODALRAGGIOLASER=VERO
If RAGGIOLASERRIFLESSO=FALSO or QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=FALSO
Proc CANCELLAILRAGGIOLASER
End If
Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(9)]
MATTONCINO(MATTONCINO-1)=0
End If
End If
End If
End If
End Proc
Procedure MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
' Check if the bar has met the specified bonus brick
If Bob Col(OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO
MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
Add PUNTEGGIO,20
Else
Add PUNTEGGIO,10
End If
Proc MOSTRAILPUNTEGGIO[VERO]
Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
Repeat
If TIPODIMATTONCINODIPOTENZIAMENTO=1 : Rem add a ball in the game field
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=FALSO
PALLINA(PALLINA)=VERO
XPALLINA#(PALLINA)=XBARRA
YPALLINA#(PALLINA)=YBARRA-3
VELOCITADELLAPALLINA#(PALLINA)=1
D1REZIONEXPALLINA=Rnd(1)
If D1REZIONEXPALLINA=1
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
Else
DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
End If
DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
Inc PALLINEINCAMPO
Exit
End If
Next
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=2 : Rem b(all)+
If PALLINE<1000
Inc PALLINE : Proc MOSTRALEPALLINERIMASTE
End If
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=3 : Rem b(all)-
If PALLINE>0
Dec PALLINE : Proc MOSTRALEPALLINERIMASTE
End If
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=4 : Rem B(ar)+
If LUNGHEZZADELLABARRA<2
Inc LUNGHEZZADELLABARRACAMBIATA
End If
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=5 : Rem B(ar)-
If LUNGHEZZADELLABARRA>0
Dec LUNGHEZZADELLABARRACAMBIATA
End If
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=6 : Rem D(uck)
_PAPEROINCAMPO= Not _PAPEROINCAMPO
If _PAPEROINCAMPO=VERO
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
Else
Proc CANCELLAILPAPERO
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=7 : Rem G(lue)
C0LLA= Not C0LLA
If C0LLA=VERO
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
Else
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=8 : Rem L(aser)+
If LASER=-1
LASER=1
Else If LASER=1
LASER=2
Else If LASER=2
LASER=3
End If
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=9 : Rem L(aser)-
If LASER>0
Dec LASER
End If
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=10 : Rem N(ext level)
MATTONCINIRIMASTI=MATTONCINI : MATTONCINI=0
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=11 : Rem P(oints)+
If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
If PUNTEGGIO<9999800
Add PUNTEGGIO,180
End If
Else
If PUNTEGGIO<9999900
Add PUNTEGGIO,90
End If
End If
Proc MOSTRAILPUNTEGGIO[VERO]
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=12 : Rem P(oints)-
If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
Add PUNTEGGIO,-220
Else
Add PUNTEGGIO,-110
End If
If PUNTEGGIO<0
PUNTEGGIO=0
End If
Proc MOSTRAILPUNTEGGIO[VERO]
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=13 : Rem R(ow)+
If RIGA<3
T0GLILARIGA=RIGA : Inc RIGA
End If
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=14 : Rem R(ow)-
If RIGA>0
T0GLILARIGA=RIGA : RIGA=0
End If
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=15 : Rem S(peed)+
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)<8
VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)+0.5
If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
Else
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
End If
End If
Next PALLINA
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=16 : Rem S(peed)-
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)>0.5
VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)-0.5
If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
Else
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
End If
End If
Next PALLINA
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=17 : Rem X(treme)
RIMBALZODELLEPALLINESUIMATTONCINI= Not RIMBALZODELLEPALLINESUIMATTONCINI
If RIMBALZODELLEPALLINESUIMATTONCINI=FALSO
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
Else
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=18 : Rem y+
If YBARRA<247
Add YBARRA,5
End If
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=19 : Rem y-
If YBARRA>197
Add YBARRA,-5
End If
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO : Rem ?
TIPODIMATTONCINODIPOTENZIAMENTO=Rnd(18)+1
End If
Until TIPODIMATTONCINODIPOTENZIAMENTO=0
End If
End Proc
Procedure MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
' Check if the specified bonus brick has gone out of the game field
If YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>255
Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
End If
End Proc
Procedure METTIILPANNELLO
' Put the panel in the game field
XPANNELLO=Screen Width-LARGHEZZAPANNELLO
Paste Bob XPANNELLO,0,51 : Paste Bob XPANNELLO,128,52
End Proc
Procedure METTIECONTAIMATTONCINI
' Put the bricks in the game field and count them
MATTONCINI=0
For MATTONCINO=0 To 246
If MATTONCINO(MATTONCINO)>0
Paste Bob X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO),82+MATTONCINO(MATTONCINO)
Inc MATTONCINI
Else
Ink 0 : Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
End If
Next MATTONCINO
End Proc
Procedure METTIILGIOCOINPAUSA
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
MESSAGGIO$="The game is paused."+Chr$(10)
MESSAGGIO$=MESSAGGIO$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIO$,22,20,1,0]
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
End Proc
Procedure MOLLAILGUANO
' Drop the guano
If GUANOINCAMPO=VERO
If GUANOMOLLATO=FALSO
XGUANO=XPAPEROALIENO : YGUANO=YPAPEROALIENO+35 : GUANOMOLLATO=VERO
Else
Bob OGGETTOGUANO,XGUANO,YGUANO,IMMAGINEGUANO
Proc LABARRAESTATACOLPITADALGUANO
Proc ILGUANOEUSCITODALCAMPODIGIOCO
Add YGUANO,3
End If
End If
End Proc
Procedure MOSTRAICREDITI
' Show the credits
CREDITI$="EsseErre Sofware Solutions"+Chr$(10)
CREDITI$=CREDITI$+"presents..."+Chr$(10)
CREDITI$=CREDITI$+"************"+Chr$(10)
CREDITI$=CREDITI$+"* MATTONITE *"+Chr$(10)
CREDITI$=CREDITI$+"************"+Chr$(10)
CREDITI$=CREDITI$+"by Stefano Maria Regattin"+Chr$(10)
CREDITI$=CREDITI$+"piazza Pietro Gasparri, 4/U"+Chr$(10)
CREDITI$=CREDITI$+"20161 Milano (Milan) Italia (Italy)"+Chr$(10)
CREDITI$=CREDITI$+"http://utenti.tripod.it/esseerre/Stefano.html"+Chr$(10)
CREDITI$=CREDITI$+"e-mail: esseerre@lycos.it"+Chr$(10)
CREDITI$=CREDITI$+"This game, its editor and the related source"+Chr$(10)
CREDITI$=CREDITI$+"codes are freely shared out."+Chr$(10)
CREDITI$=CREDITI$+"They have been created by AMOS Professional 2.0"+Chr$(10)
CREDITI$=CREDITI$+"and compiled by AMOS Professional Compiler 2.0."+Chr$(10)
CREDITI$=CREDITI$+"The source codes don't require any additional"+Chr$(10)
CREDITI$=CREDITI$+"extension."+Chr$(10)
CREDITI$=CREDITI$+"If you will create a new game starting from these"+Chr$(10)
CREDITI$=CREDITI$+"source codes, let me know and don't forget to"+Chr$(10)
CREDITI$=CREDITI$+"email me and mention me in your resulting creation."+Chr$(10)
CREDITI$=CREDITI$+"One day I have asked to my major sister Antonella"+Chr$(10)
CREDITI$=CREDITI$+"if she would liked I created a game for her,"+Chr$(10)
CREDITI$=CREDITI$+"assuring her I was able to create almost any"+Chr$(10)
CREDITI$=CREDITI$+"kind of game she wanted."+Chr$(10)
CREDITI$=CREDITI$+"The answer was yes and she specified a game"+Chr$(10)
CREDITI$=CREDITI$+"with a bar, a bouncing ball over the bar and"+Chr$(10)
CREDITI$=CREDITI$+"dozens of bricks deletable by the ball hit,"+Chr$(10)
CREDITI$=CREDITI$+"gaining points for the hits."+Chr$(10)
CREDITI$=CREDITI$+"So I started the developing of this game and"+Chr$(10)
CREDITI$=CREDITI$+"she called it Mattonite, that in italian means"+Chr$(10)
CREDITI$=CREDITI$+"brickache."+Chr$(10)
CREDITI$=CREDITI$+"The purpose of the game is simple: destroy all"+Chr$(10)
CREDITI$=CREDITI$+"the bricks by the balls hits to overcome all"+Chr$(10)
CREDITI$=CREDITI$+"the levels and collect bonus bricks to improve"+Chr$(10)
CREDITI$=CREDITI$+"playability."+Chr$(10)
CREDITI$=CREDITI$+"The duck eats all the bricks, but avoid the alien"+Chr$(10)
CREDITI$=CREDITI$+"duck's guano!"+Chr$(10)
CREDITI$=CREDITI$+"Avoid the reflected laser ray also!"+Chr$(10)
CREDITI$=CREDITI$+"The three flashing cyan digits report the balls"+Chr$(10)
CREDITI$=CREDITI$+"left."+Chr$(10)
CREDITI$=CREDITI$+"The three flasing orange digits report the"+Chr$(10)
CREDITI$=CREDITI$+"current level."+Chr$(10)
CREDITI$=CREDITI$+"The three flashing rainbow colours digits report"+Chr$(10)
CREDITI$=CREDITI$+"the score position relative to the top hundred"+Chr$(10)
CREDITI$=CREDITI$+"scores."+Chr$(10)
CREDITI$=CREDITI$+"The seven flashing cyan digits column report"+Chr$(10)
CREDITI$=CREDITI$+"the score."+Chr$(10)
CREDITI$=CREDITI$+"The seven flashing orange digits column report"+Chr$(10)
CREDITI$=CREDITI$+"the first position score."+Chr$(10)
CREDITI$=CREDITI$+"The seven flashing rainbow colors digits report"+Chr$(10)
CREDITI$=CREDITI$+"the current level bonus."+Chr$(10)
CREDITI$=CREDITI$+"Press the space bar to shock the balls."+Chr$(10)
CREDITI$=CREDITI$+"Press the shift keys to fire the laser ray over"+Chr$(10)
CREDITI$=CREDITI$+"the bricks to hit the boings or, better, to hit"+Chr$(10)
CREDITI$=CREDITI$+"the ballthief!"+Chr$(10)
CREDITI$=CREDITI$+"Press the P key to pause the game."+Chr$(10)
CREDITI$=CREDITI$+"Press a (mouse) key to scroll quickly the text"+Chr$(10)
CREDITI$=CREDITI$+"or press the Esc key to leave the text."+Chr$(10)
CREDITI$=CREDITI$+"This is the end...Enjoy!"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CREDITI$,22,22,1,250]
End Proc
Procedure MOSTRAILBONUS[M0DO]
' Show the bonus
If M0DO=VERO
CIFRA=BONUS/1000000 mod 10
Paste Bob 305,120,73+CIFRA
CIFRA=BONUS/100000 mod 10
Paste Bob 305,138,73+CIFRA
CIFRA=BONUS/10000 mod 10
Paste Bob 305,156,73+CIFRA
CIFRA=BONUS/1000 mod 10
Paste Bob 305,174,73+CIFRA
CIFRA=BONUS/100 mod 10
Paste Bob 305,192,73+CIFRA
CIFRA=BONUS/10 mod 10
Paste Bob 305,210,73+CIFRA
CIFRA=BONUS mod 10
Paste Bob 305,228,73+CIFRA
Else
CIFRA=BONUS mod 10
Paste Bob 305,228,73+CIFRA
If CIFRA=9
CIFRA=BONUS/10 mod 10
Paste Bob 305,210,73+CIFRA
If CIFRA=9
CIFRA=BONUS/100 mod 10
Paste Bob 305,192,73+CIFRA
If CIFRA=9
CIFRA=BONUS/1000 mod 10
Paste Bob 305,174,73+CIFRA
If CIFRA=9
CIFRA=BONUS/10000 mod 10
Paste Bob 305,156,73+CIFRA
If CIFRA=9
CIFRA=BONUS/100000 mod 10
Paste Bob 305,138,73+CIFRA
If CIFRA=9
CIFRA=BONUS/1000000 mod 10
Paste Bob 305,120,73+CIFRA
End If
End If
End If
End If
End If
End If
End If
End Proc
Procedure MOSTRAILLASER
' Show the laser beam over the bar
If LASER>0
Bob OGGETTOLASER,XBARRA,YBARRA,IMMAGINELASER+LASER
Else If LASER=0
Proc T0GLIILLASER
LASER=-1
End If
End Proc
Procedure MOSTRAILLIVELLO
' Shov the level
CIFRA=LIVELLO/100 mod 10
Paste Bob 273,29,63+CIFRA
CIFRA=LIVELLO/10 mod 10
Paste Bob 289,29,63+CIFRA
CIFRA=LIVELLO mod 10
Paste Bob 305,29,63+CIFRA
End Proc
Procedure MOSTRAILPUNTEGGIO[M0DO]
' Show the score
If M0DO=VERO
CIFRA=PUNTEGGIO/1000000 mod 10
Paste Bob 273,120,53+CIFRA
CIFRA=PUNTEGGIO/100000 mod 10
Paste Bob 273,138,53+CIFRA
CIFRA=PUNTEGGIO/10000 mod 10
Paste Bob 273,156,53+CIFRA
CIFRA=PUNTEGGIO/1000 mod 10
Paste Bob 273,174,53+CIFRA
CIFRA=PUNTEGGIO/100 mod 10
Paste Bob 273,192,53+CIFRA
CIFRA=PUNTEGGIO/10 mod 10
Paste Bob 273,210,53+CIFRA
CIFRA=PUNTEGGIO mod 10
Paste Bob 273,228,53+CIFRA
Else
CIFRA=PUNTEGGIO mod 10
Paste Bob 273,228,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/10 mod 10
Paste Bob 273,210,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/100 mod 10
Paste Bob 273,192,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/1000 mod 10
Paste Bob 273,174,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/10000 mod 10
Paste Bob 273,156,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/100000 mod 10
Paste Bob 273,138,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/1000000 mod 10
Paste Bob 273,120,53+CIFRA
End If
End If
End If
End If
End If
End If
End If
If PUNTEGGIO>PUNTEGGIOMASSIMO
PUNTEGGIOMASSIMO=PUNTEGGIO
End If
Proc MOSTRAILPUNTEGGIOMASSIMO[M0DO]
Proc MOSTRALAPOSIZIONE
End Proc
Procedure MOSTRAILPUNTEGGIOMASSIMO[M0DO]
' Show the best score
If M0DO=VERO
CIFRA=PUNTEGGIOMASSIMO/1000000 mod 10
Paste Bob 289,120,63+CIFRA
CIFRA=PUNTEGGIOMASSIMO/100000 mod 10
Paste Bob 289,138,63+CIFRA
CIFRA=PUNTEGGIOMASSIMO/10000 mod 10
Paste Bob 289,156,63+CIFRA
CIFRA=PUNTEGGIOMASSIMO/1000 mod 10
Paste Bob 289,174,63+CIFRA
CIFRA=PUNTEGGIOMASSIMO/100 mod 10
Paste Bob 289,192,63+CIFRA
CIFRA=PUNTEGGIOMASSIMO/10 mod 10
Paste Bob 289,210,63+CIFRA
CIFRA=PUNTEGGIOMASSIMO mod 10
Paste Bob 289,228,63+CIFRA
Else
CIFRA=PUNTEGGIOMASSIMO mod 10
Paste Bob 289,228,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOMASSIMO/10 mod 10
Paste Bob 289,210,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOMASSIMO/100 mod 10
Paste Bob 289,192,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOMASSIMO/1000 mod 10
Paste Bob 289,174,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOMASSIMO/10000 mod 10
Paste Bob 289,156,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOMASSIMO/100000 mod 10
Paste Bob 289,138,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOMASSIMO/1000000 mod 10
Paste Bob 289,120,63+CIFRA
End If
End If
End If
End If
End If
End If
End If
End Proc
Procedure MOSTRAILRAGGIOLASER
' Show the laser ray
If RAGGIOLASERSPARATO=VERO
Bob OGGETTORAGGIOLASER,XLASER,YLASER,IMMAGINERAGGIOLASER
If RAGGIOLASERRIFLESSO=VERO
If YLASER<255
Add YLASER,5
Else
RAGGIOLASERRIFLESSO=FALSO
Proc CANCELLAILRAGGIOLASER
End If
Else
If YLASER>0
Add YLASER,-5
Else
Proc CANCELLAILRAGGIOLASER
End If
End If
Bob Update
End If
End Proc
Procedure MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
' Show the top hundred player scores
If Exist(PUNTEGGI$) and CENTOGIOCATORI$<>""
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CENTOGIOCATORI$,20,22,1,250]
Else
NONCISONOGIOCATORI$="No players till now..."+Chr$(10)
NONCISONOGIOCATORI$=NONCISONOGIOCATORI$+"Press a (mouse) key to continue"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[NONCISONOGIOCATORI$,21,20,1,250]
End If
End Proc
Procedure MOSTRALABARRA
' Show the bar
If LUNGHEZZADELLABARRA=0
Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,5
Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,6
Else If LUNGHEZZADELLABARRA=1
Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,1
Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,2
Else If LUNGHEZZADELLABARRA=2
Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,3
Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,4
End If
End Proc
Procedure MOSTRALAPOSIZIONE
' Show the current player position
For POSIZIONE=1 To 100
If PUNTEGGIO>Val(PUNTEGGIODELGIOCATORE$(POSIZIONE-1))
Exit
Else If PUNTEGGIODELGIOCATORE$(POSIZIONE-1)=""
Exit
End If
Next POSIZIONE
CIFRA=POSIZIONE/100 mod 10
Paste Bob 273,47,73+CIFRA
CIFRA=POSIZIONE/10 mod 10
Paste Bob 289,47,73+CIFRA
CIFRA=POSIZIONE mod 10
Paste Bob 305,47,73+CIFRA
End Proc
Procedure MOSTRALARIGA[TIPODIRIGA]
' Show the row
If TIPODIRIGA=1
IMMAGINERIGA=IMMAGINERIGAUNO
Else If TIPODIRIGA=2
IMMAGINERIGA=IMMAGINERIGADUE
Else If TIPODIRIGA=3
IMMAGINERIGA=IMMAGINERIGATRE
End If
If XRIGA>0
Bob OGGETTORIGA,XRIGA,251,IMMAGINERIGA
Else
If T0GLILARIGA>0
Proc T0GLILARIGA
T0GLILARIGA=0
DURATADELLARIGA=-1
End If
End If
Bob Update
End Proc
Procedure MOSTRALEPALLINERIMASTE
' Show the remained balls
PALLINERIMASTE=PALLINE-1
If PALLINERIMASTE>-1
CIFRA=PALLINERIMASTE/100 mod 10
Paste Bob 273,11,53+CIFRA
CIFRA=PALLINERIMASTE/10 mod 10
Paste Bob 289,11,53+CIFRA
CIFRA=PALLINERIMASTE mod 10
Paste Bob 305,11,53+CIFRA
End If
End Proc
Procedure _PAPEROALIENOINCAMPO
' Manage the alien duck
If _PAPEROALIENO=0
XPAPEROALIENO=Rnd(XFINALERIGA) : YPAPEROALIENO=-20
GRADIPAPEROALIENO=45 : _PAPEROALIENO=1
Else
If RITARDOPAPERO=0
Add IMMAGINEPAPEROALIENO,1,0 To IMMAGINIPAPERO-1
Inc YPAPEROALIENO
End If
If _PAPEROINCAMPO=FALSO
Add RITARDOPAPERO,1,0 To 12
End If
Add GRADIPAPEROALIENO,_PAPEROALIENO
If GRADIPAPEROALIENO=90
GUANOINCAMPO=VERO
Else If _PAPEROALIENO=1 and GRADIPAPEROALIENO=135
_PAPEROALIENO=-1
Else If _PAPEROALIENO=-1 and GRADIPAPEROALIENO=45
_PAPEROALIENO=1
End If
XMOVIMENTOPAPEROALIENO=Cos(GRADIPAPEROALIENO)*80
YMOVIMENTOPAPEROALIENO=Sin(GRADIPAPEROALIENO)*80-50
Bob OGGETTOPAPEROALIENO,XPAPEROALIENO+XMOVIMENTOPAPEROALIENO,YPAPEROALIENO+YMOVIMENTOPAPEROALIENO,IMMAGINEPAPEROALIENO(IMMAGINEPAPEROALIENO)
Proc ILPAPEROALIENOESTATOCOLPITO
Proc ILPAPEROALIENOEUSCITODALCAMPODIGIOCO
End If
End Proc
Procedure _PAPEROINCAMPO
' Manage the duck
Bob OGGETTOPAPERO,XPAPERO,YPAPERO,IMMAGINEPAPERO(IMMAGINEPAPERO)
If RITARDOPAPERO=0
Add IMMAGINEPAPERO,1,0 To IMMAGINIPAPERO-1
End If
Add RITARDOPAPERO,1,0 To 12
If MATTONCINODATROVAREPERILPAPERO<247
If MATTONCINO(MATTONCINODATROVAREPERILPAPERO)>0
XMATTONCINOPERILPAPERO=X0ZONA(MATTONCINODATROVAREPERILPAPERO)-XPAPERO
YMATTONCINOPERILPAPERO=Y0ZONA(MATTONCINODATROVAREPERILPAPERO)-YPAPERO
If Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)<DISTANZADELMATTONCINOPIUVICINOALPAPERO
DISTANZADELMATTONCINOPIUVICINOALPAPERO=Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)
MATTONCINOPERILPAPERO=MATTONCINODATROVAREPERILPAPERO
End If
End If
Add MATTONCINODATROVAREPERILPAPERO,1,0 To 247
Else
DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
XDISTANZADELPAPERODALMATTONCINOPIUVICINO=X0ZONA(MATTONCINOPERILPAPERO)+10-XPAPERO
If XDISTANZADELPAPERODALMATTONCINOPIUVICINO>0
Inc XPAPERO
Else If XDISTANZADELPAPERODALMATTONCINOPIUVICINO<0
Dec XPAPERO
End If
YDISTANZADELPAPERODALMATTONCINOPIUVICINO=Y0ZONA(MATTONCINOPERILPAPERO)+5-YPAPERO
If YDISTANZADELPAPERODALMATTONCINOPIUVICINO>0
Inc YPAPERO
Else If YDISTANZADELPAPERODALMATTONCINOPIUVICINO<0
Dec YPAPERO
End If
If XDISTANZADELPAPERODALMATTONCINOPIUVICINO=0 and YDISTANZADELPAPERODALMATTONCINOPIUVICINO=0
If MATTONCINO(MATTONCINOPERILPAPERO)>0
X0MATTONCINO=X0ZONA(MATTONCINOPERILPAPERO)
Y0MATTONCINO=Y0ZONA(MATTONCINOPERILPAPERO)
X1MATTONCINO=X0MATTONCINO+19
Y1MATTONCINO=Y0MATTONCINO+9
Proc CANCELLAILPAPERO
Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO
Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINOPERILPAPERO,Rnd(9)]
MATTONCINO(MATTONCINOPERILPAPERO)=0
Else
MATTONCINODATROVAREPERILPAPERO=0
End If
End If
End If
End Proc
Procedure RIDISEGNODELMATTONCINO[MATTONCINO,DURATADELRIDISEGNODELMATTONCINO]
' Redraw the hitted bricks
For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
If MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
Else If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=0
MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
Pop Proc
End If
Next MATTONCINODARIDISEGNARE
End Proc
Procedure RIMETTILOSFONDO
' Redraw the screen
Put Block 1
End Proc
Procedure RUBAPALLINAINCAMPO
If PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
PALLINA=Rnd(MASSIMOPALLINEINCAMPO-1)
If PALLINA(PALLINA)=VERO
PALLINASCELTADALRUBAPALLINA=PALLINA
YRUBAPALLINA=0
If SUONICARICATI=VERO
Sam Play 13 : Proc VOCESEGUENTE
Else
Bell 4
End If
End If
Else
Bob OGGETTORUBAPALLINA,XRUBAPALLINA,YRUBAPALLINA,IMMAGINERUBAPALLINA(IMMAGINERUBAPALLINA)
If PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
If PALLINA(PALLINASCELTADALRUBAPALLINA)=VERO
XPALLINA=Int(XPALLINA#(PALLINASCELTADALRUBAPALLINA))
YPALLINA=Int(YPALLINA#(PALLINASCELTADALRUBAPALLINA))
XRUBAPALLINA=XPALLINA
If YRUBAPALLINA>YPALLINA
Dec YRUBAPALLINA
Else If YRUBAPALLINA<YPALLINA
Inc YRUBAPALLINA
Else
PALLINAPRESADALRUBAPALLINA=PALLINASCELTADALRUBAPALLINA
PALLINA(PALLINAPRESADALRUBAPALLINA)=FALSO
End If
Else
PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
End If
Else
Bob OGGETTOPALLINA+PALLINAPRESADALRUBAPALLINA,XRUBAPALLINA,YRUBAPALLINA,IMMAGINEPALLINA
Add XRUBAPALLINA,Rnd(6)-3
Proc LIMITI[XRUBAPALLINA,11,XFINALERIGA-11] : XRUBAPALLINA=Param
Dec YRUBAPALLINA
If RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA=0
If SUONICARICATI=VERO
Sam Play 14 : Proc VOCESEGUENTE
Else
Bell 4
End If
End If
Add RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA,1,0 To 49
Proc ILRUBAPALLINAEUSCITODALCAMPODIGIOCO
End If
Proc ILRUBAPALLINAESTATOCOLPITO
End If
End Proc
Procedure SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
' Save the top hundred scores
If Exist(PUNTEGGI$) Then Kill PUNTEGGI$
Open Out 1,PUNTEGGI$
For POSIZIONI=0 To 99
If Val(PUNTEGGIODELGIOCATORE$(POSIZIONI))>0
Print #1,NOMEDELGIOCATORE$(POSIZIONI)
Print #1,PUNTEGGIODELGIOCATORE$(POSIZIONI)
Print #1,LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI)
End If
Next POSIZIONI
Close 1
End Proc
Procedure TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTO$,C0LORETESTOPRIMALINEA,C0LORETESTOSECONDALINEA,C0LOREBORDO,TEMP0]
' Manage the texts
If TESTO$="" Then Get Block 1,0,0,Screen Width,Screen Height
ALTEZZALINEA=ALTEZZAFONT+3
LINEE=1
POSIZIONEPAROLA=1
Repeat
ACAPO=Instr(TESTO$,Chr$(10),POSIZIONEPAROLA)
If ACAPO>0 Then Inc LINEE : POSIZIONEPAROLA=ACAPO+1
Until ACAPO=0
If LINEE=1
C0LORETESTO=C0LORETESTOPRIMALINEA
XINIZIOTESTO=(Screen Width-Text Length(TESTO$))/2
YINIZIOTESTO=(Screen Height-(ALTEZZALINEA))/2+Text Base
Proc RIMETTILOSFONDO
Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
Proc _ASPETTA[TEMP0]
If TASTO=27
Pop Proc
End If
Else
Dim TESTO$(LINEE-1)
POSIZIONEPAROLA=1
For LINEA=0 To LINEE-1
ACAPO=Instr(TESTO$,Chr$(10),POSIZIONEPAROLA)
If ACAPO>0
TESTO$(LINEA)=Mid$(TESTO$,POSIZIONEPAROLA,ACAPO-POSIZIONEPAROLA)
POSIZIONEPAROLA=ACAPO+1
Else
TESTO$(LINEA)=Right$(TESTO$,Len(TESTO$)-POSIZIONEPAROLA+1)
End If
Next LINEA
ALTEZZATESTO=ALTEZZALINEA*LINEE
If ALTEZZATESTO<Screen Height
ILTESTOSTATUTTONELLOSCHERMO=VERO
Else
For LINEA=LINEE To 2 Step -1
ALTEZZATESTO=ALTEZZALINEA*LINEA
If ALTEZZATESTO<Screen Height
NUMEROMASSIMODILINEENELLOSCHERMO=LINEA
Exit
End If
Next LINEA
End If
If ILTESTOSTATUTTONELLOSCHERMO=VERO
Proc RIMETTILOSFONDO
YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
For LINEA=0 To LINEE-1
If LINEA mod 2=0
C0LORETESTO=C0LORETESTOPRIMALINEA
Else
C0LORETESTO=C0LORETESTOSECONDALINEA
End If
XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
Next LINEA
Proc _ASPETTA[TEMP0]
If TASTO=27
Pop Proc
End If
Else
Proc RIMETTILOSFONDO
YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
For LINEA=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
If(LINEA) mod 2=0
C0LORETESTO=C0LORETESTOPRIMALINEA
Else
C0LORETESTO=C0LORETESTOSECONDALINEA
End If
XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
Next LINEA
Proc _ASPETTA[TEMP0*NUMEROMASSIMODILINEENELLOSCHERMO]
If TASTO=27
Pop Proc
End If
For LINEA=1 To LINEE-NUMEROMASSIMODILINEENELLOSCHERMO
Proc RIMETTILOSFONDO
For LINEANELLOSCHERMO=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
If(LINEA+LINEANELLOSCHERMO) mod 2=0
C0LORETESTO=C0LORETESTOPRIMALINEA
Else
C0LORETESTO=C0LORETESTOSECONDALINEA
End If
XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEANELLOSCHERMO+LINEA)))/2
Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEANELLOSCHERMO,TESTO$(LINEANELLOSCHERMO+LINEA),C0LORETESTO,C0LOREBORDO]
Next LINEANELLOSCHERMO
Proc _ASPETTA[TEMP0]
If TASTO=27
Pop Proc
End If
Next LINEA
End If
End If
End Proc
Procedure T0GLILARCOBALENO
' Fade out the rainbow
For LINEADELLARCOBALENO=271 To 271-255 Step -1
Rainbow 0,257,0,LINEADELLARCOBALENO
Wait Vbl
Next LINEADELLARCOBALENO
End Proc
Procedure T0GLILARIGA
' Turn off the row
Bob Off OGGETTORIGA
Bob Update
End Proc
Procedure T0GLIILLASER
' Turn off the laser beam
Bob Off OGGETTOLASER
Bob Update
End Proc
Procedure T0GLIILPANNELLO
' Fade out the panel
Ink 0
For LINEAPANNELLO=255 To 0 Step -1
Draw XPANNELLO,LINEAPANNELLO To XPANNELLO+LARGHEZZAPANNELLO-1,LINEAPANNELLO
Wait Vbl
Next LINEAPANNELLO
End Proc
Procedure T0GLIIMATTONCINI
' Fade out the bricks
Ink 0
For MATTONCINO=246 To 0 Step -1
If MATTONCINO(MATTONCINO)>0
Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
Wait Vbl
End If
Next MATTONCINO
End Proc
Procedure TROVAILFONTDATA70
' Look for the Data70 font
TESTOFONTEDICARATTERE$="I am looking for the Data70 font..."+Chr$(10)
TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"...in your FONTS: drawer."+Chr$(10)
TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Wait for a moment, please..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,17,17,19,-1]
Get Disc Fonts
For FONTEDICARATTERE=1 To 65535
FONTEDICARATTERE$=Left$(Font$(FONTEDICARATTERE),30)-" "
If FONTEDICARATTERE$="Data70.font" Then Exit
Next FONTEDICARATTERE
If FONTEDICARATTERE<65536
Set Font FONTEDICARATTERE
ALTEZZAFONT=Val(Mid$(Font$(FONTEDICARATTERE),31,2)-" ")
TESTOFONTEDICARATTERE$="The font I am using is the Data70 font! :)"+Chr$(10)
TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"This font will be used for the game."+Chr$(10)
TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,17,17,19,250]
Else
TESTOFONTEDICARATTERE$="The font I am using is the Topaz font! :("+Chr$(10)
TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"This font will be used for the game."+Chr$(10)
TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,18,18,19,250]
End If
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
End Proc
Procedure VOCESEGUENTE
' Select the next audio voice for the next sound
Add VOCE,VOCE : If VOCE=16 Then VOCE=1
End Proc